package com.woniuxy.pxxt.dao;


import com.woniuxy.pxxt.common.vo.SelectTrainVo;
import com.woniuxy.pxxt.dto.*;
import com.woniuxy.pxxt.common.vo.FindTrainUserScheduleVo;
import com.woniuxy.pxxt.dto.train.TrainMgsDtoSkc;
import com.woniuxy.pxxt.entity.ListSource;
import com.woniuxy.pxxt.entity.Train;
import io.swagger.annotations.ApiParam;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 培训项目的表(PxxtTrain)表数据库访问层
 *
 * @author makejava
 * @since 2022-03-07 15:19:14
 */
public interface TrainDao {
    /**
     *<P> @MethodName:
     *<P> @TODO 查询培训项目
     *<P> @param null:
     *<P> @return: null
     *<P> @Date 2022/3/7 19:22
     **/
    List<FindTrainDto> findTrain(Train train);

    /**
     *<P> @MethodName: createTrain
     *<P> @TODO 创建培训
     *<P> @param train:
     *<P> @return: java.lang.Integer
     *<P> @Date 2022/3/10 8:49
    **/
    Integer createTrain(Train train);


    Integer delTrainById(Integer id);

    /**
     * <P>Author ideaAdmin
     * <P>TODO:通过培训id 返回对应的所有用户
     * <P>Date 20:26 2022/3/7
     * <P>* @param trainId
     * <P>* @return com.woniuxy.pxxt.entity.Train
     **/
    List<UserDtoSkc> findTrainUser(Integer trainId);

    /**
     * <P>Author ideaAdmin
     * <P>TODO: 根据培训id 返回培训类
     * <P>Date 11:30 2022/3/8
     * <P>* @param trainId
     * <P>* @return com.woniuxy.pxxt.entity.Train
     **/
    Train findById(Integer trainId);


    /**
     * <P>Author ideaAdmin
     * <P>TODO:根据培训id 返回它们所有的进度
     * <P>Date 15:59 2022/3/8
     * <P>* @param findTrainUserScheduleVo
     * <P>* @return java.util.List<com.woniuxy.pxxt.dto.UserScheduleDto>
     **/
    List<UserScheduleDto> getUserSchedule(FindTrainUserScheduleVo findTrainUserScheduleVo);
    /**
     * <P>Author ideaAdmin
     * <P>TODO: 测试方法 返回当前的已经通过培训完成的人
     * <P>Date 13:48 2022/3/11
     * <P>* @param findTrainUserScheduleVo
     * <P>* @return java.util.List<com.woniuxy.pxxt.dto.UserScheduleDto>
     **/
    List<UserScheduleDto> getUserScore(FindTrainUserScheduleVo findTrainUserScheduleVo);


    FindViewTrainDtoSkc findViewTrainById(Integer id);

    /**
     *<P> @MethodName: findStatus
     *<P> @TODO 状态查找
     *<P> @return: java.util.List<com.woniuxy.pxxt.dto.SelectMenuDto>
     *<P> @Date 2022/3/10 8:48
    **/
    List<SelectMenuDto> findStatus();

    List<UserTrainDtoSkc> findUserAllTrain(SelectTrainVo selectTrainVo);

    /**
     * <P>Author ideaAdmin
     * <P>TODO: 根据指定的的id 返回当前的封面  获取视频 获取word知类类
     *          url_status
     *          表示当前资源属性谁 1是培训的url 2是课程的url 3是用户的url
     *          list_format
     *          资源的格式(1:图片,2:视频,3:word之类)
     * <P>Date 11:47 2022/3/10
     * <P>* @param id 当前资源的id
     * <P> @param list_format 当前需要查询的类型 资源的格式(1:图片,2:视频,3:word之类)
     * <P>* @return java.lang.String
     **/
    ListSource findCoverUrlById(@Param("url_status") @ApiParam(value = "指定查询类型id 培训 课程 用户") Integer url_status,
                                @Param("list_format") @ApiParam(value = "指定查询资源类型 封面  视频 word等") Integer list_format,
                                @Param("id") @ApiParam(value = "指定查询的id") Integer id);

    int updateTrain(Train train);

    TrainEditDto findTrainByIdEdit(Integer id);


    /**
     * <P>Author ideaAdmin
     * <P>TODO: 返回所有的培训状态
     * <P>Date 15:08 2022/3/11
     * <P> *
     * <P>* @return java.util.List<com.woniuxy.pxxt.dto.train.TrainMgsDtoSkc>
     **/
    List<TrainMgsDtoSkc> findAllTrainMsg();
}

